package com.ziyuan.controller;

import com.ziyuan.pojo.Article;
import com.ziyuan.pojo.PageBean;
import com.ziyuan.pojo.Result;
import com.ziyuan.service.ArticleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/article")
@Slf4j
public class ArticleController {
    @Autowired
    private ArticleService articleService;
    @PostMapping
    public Result add(@RequestBody @Validated(Article.addGroup.class) Article article){
       articleService.add(article);
        return Result.success();
    }
    /**
     * 通过PUT方法更新文章信息。
     *
     * 该方法接收一个经过验证的文章对象，使用文章服务对其进行更新操作。
     * 验证注解{@link Validated}确保了传入的文章对象符合更新组的验证规则，
     * 这有助于防止不合法的数据更新。
     *
     * @param article 经过验证的文章对象，包含需要更新的信息。
     * @return 返回一个表示操作结果的对象，成功时包含成功信息。
     */
    @PutMapping
    public Result put(@RequestBody @Validated(Article.updateGroup.class) Article article){
        // 调用文章服务更新文章信息
        articleService.update(article);
        // 返回操作成功的结果
        return Result.success();
    }
    @GetMapping("/detail")
    public Result get(Integer id){
        Article article = articleService.get(id);
        log.info("查询到的文章信息：{}", article);
        return Result.success(article);

    }
    @DeleteMapping
    public Result Delete(@RequestParam() Integer id){
    articleService.Delete(id);
    return Result.success();
    }
    @GetMapping
    public Result<PageBean> get(@RequestParam(defaultValue = "1") Integer pageNum,
                                @RequestParam(defaultValue = "3") Integer pageSize,
                                @RequestParam(required = false) Integer categoryId,
                                @RequestParam(required = false) String state){
        PageBean<Article> articlePageBean = articleService.pageList(pageNum, pageSize, categoryId,state);
        return Result.success(articlePageBean);

    }
//    测试提交
//    sdasd
}
